<?php
//note 获取get方式传递过来的数据
function get( $key ){
	$var = isset( $_GET[$key] ) ? addslashes( trim( $_GET[$key] ) ) : NULL;
	return $var;
}

//note 获取post方式传递过来的数据
function post( $key ){
	$var = isset( $_POST[ $key ] ) ? $_POST[ $key ] : NULL;
	
	if( is_array( $var ) ){
		$var = _deepArr( $var );
	}else{
		$var = addslashes( trim( $var ) );
	}
	return $var;
}

//note 数组递归
function _deepArr( $arr ){
	foreach( $arr as $k=>$v ){
		if( is_array( $v ) ){
			$arr[$k] = _deepArr( $v );
		}else{
			$arr[$k] = addslashes( trim( $v ) );
		}
	}
	return $arr;
}

/**
 * 弹出警告框
 * @param string $mes 警告内容
 * @param string $go 转向地址，-1：后退，0：关闭当前窗口
 * @param string $js 客户端要执行的js脚本
 * */
function alert( $mes, $go = '', $js = '' ){
	if( $mes ){
		$mes = 'alert("' .$mes . '\t\t");';
	}
	if( $go == '-1'){
 		$go = "history.back(-1);";
 	}elseif( $go == '0' ){
 		$go = "window.close();";
 	}elseif( $go == 'from' ){
 		$go = "location.href = \"index.php?{$_SERVER['QUERY_STRING']} \";";
 	}elseif( !empty( $go ) ){
 		$go = "location.href = \"{$go} \";";
 	}
	echo '<script type="text/javascript">'. $mes . $go . $js . '</script>';
	exit;
}

/**
 * 输入js
 * @param string $str js内容
 * */
function echoJs( $str, $exit = 1 ){
	echo '<script type="text/javascript">'. $str . ';</script>';
	if( $exit ) exit;
}

/**
 * 写文件
 * @param string $file 文件路径
 * @param string $content 文件内容
 * @return boolean
 * */
function writeFile( $file, $content ){
	if( !is_dir(dirname($file)) ) mkdir( dirname($file), 0700 );
	return file_put_contents( $file, $content );
}

/**
 * 写数组,将数组写入独立的php文件中去,适用于一维数组与二维数组
 * @param array $arr 要写入文件的数组
 * @param string 写入的php文件路径,无则自动建立
 * @return boolean
 * */
function writeArray( $arr, $path = './array.php' ){
	$commat = $b = $a = "";
	$str = "<?php\n";
	$str .= "return Array(\n";
	foreach( $arr as $k=>$v){
		if( is_array($v) && !empty( $v ) ){
			$str .= $commat . "\t'" . $k . "'\t=>\t array(\n";
			$commat = "";
			foreach( $v as $k2=>$v2 ){
				$str .= $commat . "\t\t\t'" . $k2 . "'\t=>\t'" .$v2."'";
				$commat = ",\n";
			}		
			$str .= "\n\t\t\t)";
			$b = 1;
		}elseif( is_array($v) && empty( $v ) ){
			if( $b == '' ) $a = ",\n";
			$str .= $commat . "\t'" . $k . "'\t=>\t array()" . $a;
			$b = 1;
			$a = "";
		}else{
			$str .= $commat . "\t'" . $k . "'\t=>\t'" .$v."'";
			$commat = ",\n";
		}
	}
	$str .= "\n);\n";
	$str .= "?>";
	return writeFile( $path, $str);
}

/**
 * 取得指定$dir目录下页所有后缀名在$postfix中的文件
 * @param string	$dir 要查找的目录
 * @param array		$postfix 查找此后缀的文件
 * @param $dir_ignore	$dir_ignore 忽略查找的文件件
 * @param $limit	$limit 返回要查找的文件数
 * */
function getFile( $dir, $postfix = array('html'), $dir_ignore = array(), $limit = 0 ){
	require_once './class/Dir.class.php';
	
	$dirExplorer = new DirExplorerClass();
	$dirExplorer->getDirExplorer( $dir, $postfix, $dir_ignore, $limit );
	$file_arr = $dirExplorer->dirPath_array;
	return empty( $file_arr ) ? array() : $file_arr;
}

/**
 * 检查目标文件夹是否存在，如果不存在则自动创建该目录
 * @param string folder 目录路径。不能使用相对于网站根目录的URL
 * @return bool
 */
function makeDir($folder){
    $reval = false;

    if (!file_exists($folder)){
        /* 如果目录不存在则尝试创建该目录 */
        @umask(0);

        /* 将目录路径拆分成数组 */
        preg_match_all('/([^\/]*)\/?/i', $folder, $atmp);

        /* 如果第一个字符为/则当作物理路径处理 */
        $base = ($atmp[0][0] == '/') ? '/' : '';

        /* 遍历包含路径信息的数组 */
        foreach ($atmp[1] AS $val){
            if ('' != $val){
                $base .= $val;

                if ('..' == $val || '.' == $val){
                    /* 如果目录为.或者..则直接补/继续下一个循环 */
                    $base .= '/';
                    continue;
                }
            }else{
                continue;
            }

            $base .= '/';

            if (!file_exists($base)){
                /* 尝试创建目录，如果创建失败则继续循环 */
                if (@mkdir($base, 0777)){
                    @chmod($base, 0777);
                    $reval = true;
                }
            }
            
            clearstatcache();
        }
    }else{
        /* 路径已经存在。返回该路径是不是一个目录 */
        $reval = is_dir($folder);
    }
    clearstatcache();
    return $reval;
}

/**
 * 删除文件夹
 * @param string $dirName 文件夹名称
 * @return boolean or error info 
 * */
function removeDir( $dirName ){
	$result = false;
	if(! is_dir($dirName)){
		return 'Can not find '.$dirName;
	}
	$handle = opendir($dirName);
	while(($file = readdir($handle)) !== false){
		if($file != '.' && $file != '..'){
			$dir = $dirName . DIRECTORY_SEPARATOR . $file;
			is_dir($dir) ? removeDir($dir) : unlink($dir);
		}
	}
	closedir($handle);
	$result = rmdir($dirName) ? true : false;
	return $result;
}

/**
 * 词或句子翻译
 * @param string $keyword 要翻译的词或句
 * @param string $language_from 当前词或句的语言
 * @param string $language_to 要翻译成的语言（注：$language_from和$language_to为语言简称，如中国zh-CN,日本ja）
 * return string
 * */
function t( $keyword, $language_from = 'en', $language_to = 'zh-CN' ){
	$keyword = urlencode( $keyword );
	$url = 'http://translate.google.com/translate_a/t?client=t&text='.$keyword.'&hl='.$language_to.'&sl='.$language_from.'&tl='.$language_to;
	$str = file_get_contents( $url );
	
	preg_match('/"([^"]*)"/', $str, $arr);
	return end($arr);
}

/**
 * 把语言的文件夹名转换成google或微软翻译所要的语言名
 * */
function language_convert( $tool, $lang ){

	if( $tool == 'google' ){
		switch ( $lang ){
			case 'cn': $lang = 'zh-CN';break;
			case 'tw': $lang = 'zh-TW';break;
			case 'jp': $lang = 'ja';break;
			case 'br': $lang = 'pt';break;	
		}
	}elseif( $tool == 'microsoft' ){
		switch ( $lang ){
			case 'cn': $lang = 'zh-chs';break;
			case 'tw': $lang = 'zh-cht';break;
			case 'jp': $lang = 'ja';break;
			case 'br': $lang = 'pt';break;
		}
	}
	
	return $lang;
}

/**
 * 在$path路径下遍历$dir_arr数组中(文件夹或文件)后缀名是$fix中的文件
 * */
function get_file_list( $path, $dir_arr, $fix = array('html') ){
	$arr = array();
	foreach( $dir_arr as $v ){
		if( is_dir( $path.'/'.$v ) ){
			$r = getFile( $path.'/'.$v, $fix );
			foreach( $r as $t ){
				array_push( $arr, str_replace( $path.'/', '', $t) );
			}
		}else{
			array_push( $arr, $v );
		}
	}
	return $arr;
}


/**
 * 取得站的过滤词
 * */
function get_filter_data( $sid ){
	global $site_menu;
	$file = str_replace('.php','_'.$site_menu[$sid].'.php',FILTER_CACHE);

	if( file_exists( $file ) ){
		$data = include( $file );
	}else{
		require_once 'class/Mysql.class.php';
		$db = new Mysql();
		$ret = $db->getAll( 'filter', 'sid='.$sid, 'fid,word', 'length(word) DESC' );
		$data = array();
		foreach( $ret as $v ){
			$data[$v['fid']] = $v['word'];
		}
		writeArray($data, $file);
	}
	return $data;
}

/**
 * 取得要替换的词
 * */
function get_replace_data( $sid, $lang ){
	global $site_menu;
	$file = str_replace('.php','_'.$site_menu[$sid].'.php',REPLACE_CACHE);
	
	if( file_exists( $file ) ){
		$data = include( $file );
	}else{
		require_once 'class/Mysql.class.php';
		$db = new Mysql();
		$data = $db->getAll('replace',"sid={$sid} AND short='{$lang}'",'r_before,r_after');
		writeArray($data, $file);
	}
	return $data;
}

/**
 * 清除缓存数据
 * */
function clear_cache_data( $file ){
	if( file_exists( $file ) ) unlink( $file );
	return true;
}